package com.seres.user.service.user;



import com.seres.client.model.user.SysMenu;
import com.seres.user.vo.user.MenuVo;
import com.seres.user.vo.user.RoleVo;

import java.util.List;

/**
 * @author Tan-Bowen
 * @version 1.0
 * @description TODO
 * @date 2021/7/26 18:03
 */
public interface IUserService {

    /**
     * @author Tan-Bowen
     * @description TODO 获取用户角色ids
     * @date 2021/7/28 19:01
     * @param [userId]
     * @paramType [long]
     * @return java.util.List<java.lang.Long>
     */
    List<Long> userRole(long userId);

    /**
     * @author Tan-Bowen
     * @description TODO 获取指定角色的菜单和接口权限id
     * @date 2021/7/29 9:46
     * @param [roleId]
     * @paramType [long]
     * @return java.util.List<java.lang.Long>
     */
    List<Long> roleMenu(long roleId);

    /**
     * @author Tan-Bowen
     * @description TODO 获取用户拥有的菜单和接口权限id
     * @date 2021/7/29 10:57
     * @param [userId]
     * @paramType [long]
     * @return java.util.List<java.lang.Long>
     */
    List<Long> userMenus(long userId);

    /**
     * @author Tan-Bowen
     * @description TODO 获取用户菜单
     * @date 2021/8/2 16:59
     * @param [userId]
     * @paramType [java.lang.Long]
     * @return java.util.List<com.demo.api.model.user.SysMenu>
     */
    List<SysMenu> getUserMenu(Long userId);


    /**
     * @author Tan-Bowen
     * @description TODO 获取用户权限和菜单列表
     * @date 2021/8/2 17:07
     * @param [userId]
     * @paramType [java.lang.Long]
     * @return com.demo.api.vo.user.MenuVo.MenuAndAuth
     */
    MenuVo.MenuAndAuth getMenuAndAuth(Long userId);

    /**
     * @author Tan-Bowen
     * @description TODO 获取用户的菜单和权限ids
     * @date 2021/9/13 17:08
     * @param []
     * @paramType []
     * @return com.demo.api.vo.user.MenuVo.MenuAuthId
     */
    MenuVo.MenuAuthId getMenuAndAuthId();

    /**
     * @author Tan-Bowen
     * @description TODO 获取角色的菜单和权限ids
     * @date 2021/9/13 18:03
     * @param [roleId]
     * @paramType [java.lang.Long]
     * @return com.demo.api.vo.user.MenuVo.MenuAuthId
     */
    MenuVo.MenuAuthId getMenuAndAuthId(Long roleId);

    /**
     * @author Tan-Bowen
     * @description TODO 获取当前用户角色信息
     * @date 2021/9/14 12:00
     * @param [userId]
     * @paramType [java.lang.Long]
     * @return com.demo.api.vo.user.RoleVo.PageList
     */
    RoleVo.PageList getUserRole(Long userId);

    /**
     * @author Tan-Bowen
     * @description TODO 给用户绑定角色
     * @date 2021/9/14 15:32
     * @param [userId, roleId]
     * @paramType [java.lang.Long, java.lang.Long]
     * @return void
     */
    void bandUserRole(Long userId, Long roleId);
}
